package com.vim.common.utils;

import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.bean.copier.CopyOptions;

import java.util.ArrayList;
import java.util.List;

/**
 * @作者 Administrator
 * @时间 2020-08-25 20:53
 * @版本 1.0
 */
public class POJOConverter {

    /**
     * 对象复制
     */
    public static <S, T> T copy(S source, T target) {
        BeanUtil.copyProperties(source, target);
        return target;
    }

    /**
     * 对象复制
     */
    public static <S, T> T copy(S source, Class<T> cls) {
        try {
            T t = cls.newInstance();
            return copy(source, t);
        }catch (Exception e){
            e.printStackTrace();
        }
        return null;
    }

    /**
     * 对象List复制
     */
    public static <S, T> List<T> copyList(List<S> ss, Class<T> cls) {
        if(null == ss){
            return null;
        }
        List<T> tRes = new ArrayList<>();
        try {
            for (S s : ss) {
                T t = cls.newInstance();
                BeanUtil.copyProperties(s, t);
                tRes.add(t);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return tRes;
    }

    /**
     * 对象List复制
     */
    public static <S, T> List<T> copyList(List<S> ss, Class<T> cls, CopyOptions options) {
        if(null == ss){
            return null;
        }
        List<T> tRes = new ArrayList<>();
        try {
            for (S s : ss) {
                T t = cls.newInstance();
                BeanUtil.copyProperties(s, t, options);
                tRes.add(t);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return tRes;
    }
}
